/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.cmti.skeleton.service;

import com.cmti.skeleton.dto.SysRoleDto;
import com.cmti.skeleton.dto.TreeNode;
import com.cmti.skeleton.entity.SysRights;
import com.cmti.skeleton.entity.SysRole;
import java.util.List;

/**
 *
 * @author Danny Lee CMTI
 */
public interface RoleService {

    /**
     * 根据查询条件获取角色列表
     *
     * @param role 封装查询条件的SysRole对象
     * @return
     */
    List<SysRoleDto> getRoles(SysRoleDto role);

//    /**
//     * 根据查询条件获取数据库中角色总记录条数
//     *
//     * @param role 封装查询条件的SysRole对象
//     * @return
//     */
//    long getRolesCount(SysRole role);
    /**
     * 根据roleId获取该角色对应的权限树
     *
     * @param roleId
     * @return
     */
    List<TreeNode> getRightsTreeByRoleId(long roleId);

    /**
     * 根据roleId获取该角色对应的权限列表
     *
     * @param roleId
     * @return
     */
    List<SysRights> getRightsByRoleId(long roleId);

    /**
     * 根据ID 查询角色信息
     *
     * @param userId
     * @return
     */
    public List<SysRole> queryRoleList(Long userId);

    /**
     * 添加角色
     *
     * @param roleDto
     */
    void addRole(SysRoleDto roleDto);

    /**
     * 删除角色
     *
     * @param roleId
     * @return 0 成功; 1 失败,有关联用户;
     */
    int deleteRole(long roleId);

    /**
     * 修改角色
     *
     * @param roleDto
     */
    void modifyRole(SysRoleDto roleDto);

    /**
     * 冻结/激活角色
     *
     * @param roleId
     * @param status 0 激活; 1 冻结
     */
    void lockOrUnlock(long roleId, int status);

    /**
     * 根据角色ID查询角色
     *
     * @param roleId
     * @return
     */
    SysRole getRoleById(long roleId);

    /**
     * 根据用户ID获取权限
     *
     * @param uid
     * @return
     */
    List<SysRights> getRightsByUserId(long uid);

}
